<template>
  <div class="f-menu" :style="{ width:$store.state.asideWidth }">
    <el-menu :default-active="defaultActive" unique-opened :collapse="isCollapse" class="border-0" @select="handelSelect" :collapse-transition="false"><!-- unique-opened  只能展开一个子菜单 -->
      <template v-for="(item,index) in asideMenus" :key="index">
        <el-sub-menu v-if="item.child && item.child.length > 0" :index="item.name">
          <template #title>
            <el-icon>
              <component :is="item.icon"></component>
            </el-icon>
            <span>{{ item.name }}</span>
          </template>
          <el-menu-item v-for="(item2,index2) in item.child" :key="index2" :index="item2.frontpath">
            <el-icon>
              <component :is="item2.icon"></component>
            </el-icon>
            <span>{{ item2.name }}</span>
          </el-menu-item>
          
        </el-sub-menu>
        <el-menu-item v-else :index="item.frontpath">
          <el-icon>
            <component :is="item.icon"></component>
          </el-icon>
          <span>{{ item.name }}</span>
        </el-menu-item>
      </template>
    </el-menu>
  </div>
  
</template>

<script setup>
import { computed,ref } from 'vue' //引入计算属性
import { useRouter,useRoute,onBeforeRouteUpdate } from 'vue-router'
import { useStore } from 'vuex'

const router = useRouter()
const store = useStore()
const route = useRoute()


//默认选中侧边二级菜单
const defaultActive = ref(route.path)

//监听路有变化
onBeforeRouteUpdate((to,from)=>{
  //console.log(to);
  defaultActive.value = to.path
})

//是否折叠侧边栏
const isCollapse = computed(() => !(store.state.asideWidth == '250px')) // “!” 取反


/* const asideMenus =[
  {
    "name": "后台面板",
    "icon": "help",
    "child": [{
      "name": "主控台",
      "frontpath": "/",
      "icon": "home-filled",
    }]
  }
] */
const asideMenus = computed(() => store.state.menus)
//定义事件


const handelSelect = (e)=> {
  router.push(e)
}

</script>

<style scoped lang='scss'>
.f-menu {
  @apply shadow-md fixed bg-light-50;
  top: 64px;
  bottom: 0;
  left: 0;
  overflow-y: auto;
  overflow-x: hidden;
  transition: all 0.2s; //动画效果  过渡2秒
}
.f-menu::-webkit-scrollbar {
  width: 0;
}
</style>